perm filename MIXIO.FAI[OLD,LCS] blob sn#058121 filedate 1974-01-08 generic text, type T, neo UTF8
00100	;**** UDP PORTIONS ARE FOR STANFORD DISK SYSTEM(USER-DISK PACK)
00200	;  MTA1 ITEMS ARE USED WITH "TAPMUS" (ETC.), TAPE TRANSFER PROGS.
00300		TITLE MIXIO ; ********* AUG 13,73 *********
00700		INTERNAL GETFI2,FASTI2,ZBIT,USETI
00800	
00900	; USE UDFAST.DMP[1,3] TO PLAY FROM UDP
01000	
01200					;SET TO 1 FOR FILE STRUCTURED UDP
01400	
01500		CH←12
01600		CH2←11
01650		CH3←13
01800	
01900	DEFINE ERROR (MSG)
02000	<	JSA 16,.ERROR
02100		JUMP [ASCIZ/MSG/
02200	]
02300	>
02400	
02500	REGS:	BLOCK 20
02600	
02610	; CALL USETI(WDS/128)
02613	
02616	USETI:	0
02619		MOVE 1,@(16)
02622		USETI CH2,(1)
02625		JRA 1,1(16)
02628	
02631	; CALL ZBIT(<INPUT ARRAY>,<OUTPUT ARRAY>)
02634	;              (256 WDS)     (512 WDS)
02637	
02640	ZBIT:	0
02643		MOVE 2,(16)
02646		MOVE 1,1(16)
02649		HRLI 2,-=256
02652	
02655	LOOP:	HLRE 0,(2)
02658		FSC 0,233	;FLOAT IT
02661		MOVEM 0,(1)	; GETS 512 18-BIT SAMPLES OUT OF 256 WDS.
02664		HRRE 0,(2)
02667		FSC 0,233
02670		MOVEM 0,1(1)
02673		ADDI 1,2
02676		AOBJN 2,LOOP
02679		JRA 16,1(16)
02700	
06800	;CALL GETFI2(<FILE>)
06900	
07000	GETFI2:	0
07100		MOVE 0,@0(16)
07200		MOVEM 0,FILNAM
07300		JSA 16,INTFIZ
07400		MOVE 0,[SIXBIT/DMD/]
07500		MOVEM 0,DIR+1
07600		JSA 16,LKUP
07700		SKIPA
07800		JRST GETF3
07900		SETZM DIR+1
08000		JSA 16,LKUP
08100		0
08200	GETF3:	JRA 16,1(16)
08300	
08400	LKUP:	0
08500		SETZM DIR+2
08600		SETZM DIR+3
08700		LOOKUP CH3,DIR
08800		JRA 16,0(16)
08900		JRA 16,1(16)
09000	
09100	INTFIZ:	0	;INITS DSK FOR INPUT
09200		MOVEI REGS
09300		BLT REGS+3
09400		INIT CH3,17
09500		SIXBIT/DSK/
09600		0
09700		ERROR <CAN'T INIT DSK!>
09800		JRST INTF4
09900	
10000	DIR:	BLOCK 4
10100	
10200	
10300	;CALL FASTI2(<ARRAY>,<NO. WORDS>)
10400	
10500	FASTI2:	0
10600		HRRZ 0,0(16)
10700		SUBI 0,1
10800		MOVEM 0,COM
10900		MOVN 0,@1(16)
11000		HRLM 0,COM
11100		INPUT CH3,COM
11200		STATZ CH3,740000
11300		0
11400		JRA 16,2(16)
11450	
12000	COM:	OCT 0,0
12100	COM1:	0
12200	BLKNUM:	0
12300	
18800	
18900	INTFIL:	0	;INITS DSK 
19000		MOVEI REGS
19100		BLT REGS+3
19200		INIT CH2,17
19300		SIXBIT/DSK/
19400		0
19500		ERROR <CAN'T INIT DSK!>
19600	INTF4:	MOVE 0,FILNAM#
19700		MOVEM 0,FN#
19800		MOVE 1,[POINT 7,FN]
19900	INTF3:	MOVE 2,[POINT 6,DIR]
20000		SETZM DIR
20100		MOVEI 3,5
20200	INTF1:	ILDB 0,1
20300		CAIN 0," "
20400		JRST INTF2
20500		SUBI 0,40
20600		IDPB 0,2
20700		SOJG 3,INTF1
20800	INTF2:	HRLZI REGS
20900		BLT 3
21000		JRA 16,0(16)
21100	
31400	.ERROR:	0
31500		OUTSTR [ASCIZ/?
31600	/]				;MAKE SURE HE CAN SEE HIS ERROR
31700		OUTSTR @(16)		;OUTPUT ERROR MESSAGE
31800		CALLI 1,12		;LET USER CONTI2UE
31900		JRA 16,1(16)
32000	UDPBUF:	BLOCK 40
32100	
32200	
32300	
35200	;	CALL NORM(ARRAY,SIZE,FACTOR)
35300	; UNPACKS 18-BIT SMPLS, NORMALIZES, REPACKS AS 12-BIT SMPLS.
35400	; ---- 3K OF 18-BIT BECOMES 2K OF 12-BIT
35500	;****** BE SURE TO SET FACTOR FOR 9-BIT SO MAXAMP IS NOT >255.
35600	
39100		END